STM32最小系统板教程第三章第3讲|STM32 UART串口通信
置顶公众号,不错过每一讲内容。
完整课程体系(公众号每日更新一讲):
本讲知识点:串口简介、串口的使用、printf重定向
3.3.1 串口简介
串口是任何MCU中不可或缺的一个外设接口,也是我们开发中的重要调试手段,因此它的重要性不言而喻,这也是大家必须掌握的一个知识点。
串口通信采用的是串行通信,其通信示意图如下所示:
图3-3-1 串口通信
串行通信的特点:数据在一根数据线上依次逐位发送或接收,因此它的控制复杂,传输速度慢,但是适用于远距离传输。
我们所使用的串口(USART)又称为通用同步异步收发器,我们所使用的是异步串行通信,异步串行通信示意图如下所示:
图3-3-2 异步串行通信
异步串行通信的特点:它是指发送和接收端使用各自的时钟,是不连续传输的通信方式,一次通信只传输一个字符数据,称为字符帧。字符帧之间可以是任意间隙,字符帧的组成如上图所示。串行通信的数据传输方向可以分为单工、半双工、全双工传输,如下图所示:
图3-3-3 数据传输方式
简单了解了串口通信后,我们开始软件配置来实现串口通信。
3.3.2 串口软件配置
与之前一样,我们复制一份上一讲的代码,在此基础上编写本讲代码,首先我们添加usart.c和usart.h文件并加入到工程中,还不熟悉的朋友可以看看之前的讲解,其次,我们还需要添加USART的库函数,这里将添加完毕的结果贴图如下:
图3-3-4 usart.c、usart.h的添加
在编写之前,同样我们先看下原理图,本讲我们使用的是串口1,因此使用的是PA9和PA10两个引脚,同时根据《STM32F10xxx参考手册》第110页,串口外设的GPIO配置可以知道PA9和PA10的模式配置,如下图所示:
图3-3-5 串口1接口
图3-3-6 串口GPIO模式配置
根据串口模式配置,我们将其配置为全双工模式。还是先初始化串口所对应的引脚,再初始化串口这个外设,配置好的代码贴图如下:
图3-3-7 串口1引脚配置
接下来我们在主函数里调用串口库函数里的接收、发送函数,来实现在串口助手发送一个字符,单片机接收到后在转发到串口助手显示的效果,代码贴图如下:
仿真器与核心板的串口接线图如下:
图3-3-8 串口接线图
接着,我们打开串口调试助手,配置如下:
图3-3-9 串口实验
大家可以根据步骤自己动手配置来实现这个实验,加强学习效果。
3.3.3 printf重定向
接下来给大家介绍一种常用的调试函数printf函数,在STM32中如果不把printf重定向到USART1上,则无法将printf中的信息输出显示到电脑端的串口助手上,因此,我们需要加入重定向的一段代码,可以放在任何.c(源文件)里,这里我们就放在usart.c中,如下图所示:
图3-3-10 重定向代码
我们在主函数中只留下GPIO翻转的代码,其余的注释掉,添加printf()函数,勾选Use MicroLIB,编译后下载到核心板,观察现象:
图3-3-11 printf函数打印实验
本讲内容就到这里,大家亲自动手实践一下吧
视频课程(点击文末左下角“阅读原文”,可看高清视频):
https://v.qq.com/txp/iframe/player.html?vid=l0736m6p5ea&width=500&height=375&auto=0
最小系统板的购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=573256065703
elink32仿真器购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=558334383550
课程系列回顾:
STM32最小系统板教程第三章第1讲|从“点灯”入门STM32
STM32最小系统板教程第三章第2讲|STM32时钟系统及实现准确延时
感谢您阅读“电子开发学习”的文章,如果您觉得图文能帮助您学习,欢迎关注我们。请点击右上角按钮,选择“查看公众号”,再点击关注即可。或者可以通过搜索公众号的方式关注: electricstudy 。您可以通过扫码下面的二维码关注我们。如果您想阅读往期文章,可点击“查看历史消息”。
历史好文推荐(点击文章标题可跳转):
小马哥四轴硬件第1讲、 Altium Designer安装与介绍
如何让Arduino IDE支持你手里的STM32 nucleo开发板